package com.atguigu.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;


@RestController // 统一规定方法返回都是@RequestBody
public class ReqMapLimitController {
    // 请求方式:
    //      GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
    @RequestMapping(value = "/testLM", method = {RequestMethod.POST, RequestMethod.PUT})
    public String testLimitMethod() {
        return "test limit method";
    }

    // 请求参数：params = {"username","age"}
    // 1）、username：  表示请求必须包含username参数
    // 2）、age=18：   表示请求参数中必须包含age=18的参数
    // 3）、gender!=1：  表示请求参数中不能包含gender=1的参数
    // 注意：比方没有带gender参数也满足gender!=1,参数顺序无所谓
    @RequestMapping(value = "/testLP", params = {"username","gender!=1", "age=18"})
    public String testLimitParam() {
        return "test limit param";
    }

    // 请求头：
    // 1）IGN：  表示请求必须包含IGN参数
    // 2）gender!=1：   表示请求参数中不能包含gender=1的参数
    @RequestMapping(value = "/testLH", headers = "BlackMyth=Wukong")
    public String testLimitHeader() {
        return "test limit header";
    }

    // 请求内容类型
    // Media Type：媒体类型
    // 1）application/json：  表示浏览器必须携带 json 格式的数据
    @RequestMapping(value="/testLC", consumes = "text/plain")
    public String testLimitConsumes() {
        return "test limit consumes";
    }

    // 响应内容类型：produces = {"text/plain;charset=utf-8"}; 生产什么数据；
    @RequestMapping(value="/testLProd", produces = "text/html;charset=utf-8")
    public String testLimitProduces() {
        return "<h3>test limit produces</h3>";
    }
}
